<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>CVS 树的组织</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="SECT1">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="anoncvs.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="cvs.html">快退</a></td><td width="60%" align="center" valign="bottom">附录F. CVS 仓库</td><td width="10%" align="right" valign="top"><a href="cvs.html">快进</a></td><td width="10%" align="right" valign="top"><a href="cvsup.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="SECT1"><h1 class="SECT1"><a name="CVS-TREE">F.2. CVS 树的组织</a></h1>
<div class="NOTE">
<blockquote class="NOTE">
<p><b>【作者】</b> Marc G. Fournier (<code class="EMAIL">&#60;<a href="mailto:scrappy@hub.org">scrappy@hub.org</a>&#62;</code>) 写于 1998-11-05 。</p>
</blockquote>
</div>
<p><tt class="COMMAND">cvs checkout</tt> 命令有一个 <tt class="OPTION">-r</tt> 标志可以让你检查一个模块的某一修订版。这个标志使可以很容易地在未来的任何时检索构成 'tc' 模块的 6_4 版本的源代码：</p>
<pre class="PROGRAMLISTING">cvs checkout -r REL6_4 tc</pre>
<p>这一点很有用，例如，如果某人说那个版本里面有一个臭虫，但你不能在目前的工作拷贝里面找出那个臭虫。<div class="TIP">
<blockquote class="TIP">
<p><b>【提示】</b>你还可以用 <tt class="OPTION">-D</tt> 选项检查任意一天的模块的源码。</p>
</blockquote>
</div></P>
<p>当你给多于一个文件打上相同的标记时，你可以把标记想像成"一个在由文件名与修订版本号组成的矩阵中蜿蜒的折线"。例如有 5 个文件，版本是下面的东西：</p>
<pre class="PROGRAMLISTING">             file1   file2   file3   file4   file5

             1.1     1.1     1.1     1.1  /--1.1*      &lt;-*-  TAG
             1.2*-   1.2     1.2    -1.2*-
             1.3  \- 1.3*-   1.3   / 1.3
             1.4          \  1.4  /  1.4
                           \-1.5*-   1.5
                             1.6
   </pre>
<p>那么标记 <tt class="LITERAL">TAG</tt> 将引用 file1-1.2, file2-1.3 等。</p>
<div class="NOTE">
<blockquote class="NOTE">
<p><b>【注意】</b>要创建一个发布的分支，还要在命令行上加一个 <tt class="LITERAL">-b</tt> 选项，这是一样的事情。</p>
</blockquote>
</div>
<p>因此，要创建 6.4 版本，我按照下面的方式做：</p>
<pre class="PROGRAMLISTING">cd pgsql
cvs tag -b REL6_4</pre>
<p>这样就会为 RELEASE 树创建标记和分支。</p>
<p>现在，对那些有 CVS 访问(权限)的人，就太简单了。首先，创建两个子目录，RELEASE 和 CURRENT ，这样你不会混淆这两个。然后：</p>
<pre class="PROGRAMLISTING">cd RELEASE
cvs checkout -P -r REL6_4 pgsql
cd ../CURRENT
cvs checkout -P pgsql</pre>
<p>这样将产生 <tt class="FILENAME">RELEASE/pgsql</tt> 和 <tt class="FILENAME">CURRENT/pgsql</tt> 两个目录树，从这时起，CVS 将跟踪某个位置分支在哪个目录树里面，并且允许两个树的独立更新。</p>
<p>如果你<span class="emphasis"><i class="EMPHASIS">只</i></span>在 <tt class="LITERAL">CURRENT</tt> 源码树上干活，你只需要像开始标记修补版分支以前那样做事情就行了。</p>
<p>在你完成一个分支的初始检出后</p>
<pre class="PROGRAMLISTING">cvs checkout -r REL6_4</pre>
<p>任何你在那个目录结构里面做的事情都局限与那个分支。如果你对那个目录结构打了个补丁，然后在该目录里面做一次：</p>
<pre class="PROGRAMLISTING">cvs commit</pre>
<p>该补丁就应用到该分支并且<span class="emphasis"><i class="EMPHASIS">只</i></span>应用到该分支。</p>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="anoncvs.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="cvsup.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top">通过匿名 CVS 获取源代码</td><td width="34%" align="center" valign="top"><a href="cvs.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">通过 CVSup 获取源代码</td></tr>
</table>
</div>
</body></html>